# 背包系统资源类
# 管理背包的槽位和物品存储逻辑
extends Resource
class_name Inventory
# 背包槽位数组，每个槽位包含物品和数量
@export var slots: Array[Slot]
# 信号：当槽位更新时发出，用于UI刷新
signal update_slot_ui
# 向背包中插入物品
# @param item: 要插入的CollectableItem类型的物品
func insert(item: CollectableItem):
	# 查找背包中是否已存在相同物品的槽位
	var itemslot = slots.filter(func (slot): return slot.item == item)
	# 如果存在相同物品的槽位
	if itemslot.size() > 0:
		# 增加该物品的数量
		itemslot[0].amount += 1
	else:
		# 查找背包中的空槽位（没有物品的槽位）
		var emptyslot = slots.filter(func (slot): return slot.item == null)
		# 如果存在空槽位
		if emptyslot.size() > 0 :
			# 在第一个空槽位中放置新物品
			emptyslot[0].item = item
			# 设置物品数量为1
			emptyslot[0].amount = 1
	# 发出槽位更新信号，通知UI进行刷新
	update_slot_ui.emit()
